#ifndef __SCNS_LCD_COLOR_H__
#define __SCNS_LCD_COLOR_H__

#include "ScnsConfig.h"

#if defined(SCNS_LCD_ENABLE)&&SCNS_LCD_ENABLE==1

#include "ScnsBspLcd.h"
#include "ScnsColor.h"

#if SCNS_LCD_COLOR_FORMAT==SCNS_COLOR_FORMAT_GRAY8

typedef ScnsColorGray8 ScnsLcdColor;

#define SCNS_LCD_COLOR_GRAY                 SCNS_COLOR_GRAY8_GRAY
#define SCNS_LCD_COLOR_WHITE                SCNS_COLOR_GRAY8_WHITE
#define SCNS_LCD_COLOR_BLACK                SCNS_COLOR_GRAY8_BLACK
#define SCNS_LCD_COLOR_RED                  SCNS_COLOR_GRAY8_RED
#define SCNS_LCD_COLOR_GREEN                SCNS_COLOR_GRAY8_GREEN
#define SCNS_LCD_COLOR_BLUE                 SCNS_COLOR_GRAY8_BLUE
#define SCNS_LCD_COLOR_YELLOW               SCNS_COLOR_GRAY8_YELLOW
#define SCNS_LCD_COLOR_PURPLE               SCNS_COLOR_GRAY8_PURPLE
#define SCNS_LCD_COLOR_CYAN                 SCNS_COLOR_GRAY8_CYAN
#define SCNS_LCD_COLOR_ORANGE               SCNS_COLOR_GRAY8_ORANGE

#define scnsLcdColorARGBToScreen(a,r,g,b)   scnsColorARGBToGray8(a,r,g,b)
#define scnsLcdColorScreenToA(c)            scnsColorGray8ToA(c)
#define scnsLcdColorScreenToR(c)            scnsColorGray8ToR(c)
#define scnsLcdColorScreenToG(c)            scnsColorGray8ToG(c)
#define scnsLcdColorScreenToB(c)            scnsColorGray8ToB(c)
#define scnsLcdColorScreenReplaceA(c,a)     scnsColorGray8ReplaceA(c,a)
#define scnsLcdColorRandom(i)               scnsColorGray8Random(i)

#define scnsLcdColorGray8ToScreen(c)        scnsColorGray8ToGray8(c)
#define scnsLcdColorBinary8ToScreen(c)      scnsColorBinary8ToGray8(c)
#define scnsLcdColorRgb565ToScreen(c)       scnsColorRgb565ToGray8(c)
#define scnsLcdColorBgr565ToScreen(c)       scnsColorBgr565ToGray8(c)
#define scnsLcdColorRgb888ToScreen(c)       scnsColorRgb888ToGray8(c)
#define scnsLcdColorBgr888ToScreen(c)       scnsColorBgr888ToGray8(c)
#define scnsLcdColorArgb8888ToScreen(c)     scnsColorArgb8888ToGray8(c)
#define scnsLcdColorArgb4444ToScreen(c)     scnsColorArgb4444ToGray8(c)
#define scnsLcdColorArgb1555ToScreen(c)     scnsColorArgb1555ToGray8(c)
#define scnsLcdColorRgb666P1221ToScreen(c)  scnsColorRgb666P1221ToGray8(c)
#define scnsLcdColorRgb666P222ToScreen(c)   scnsColorRgb666P222ToGray8(c)

#define scnsLcdColorScreenToGray8(c)        scnsColorGray8ToGray8(c)
#define scnsLcdColorScreenToBinary8(c)      scnsColorGray8ToBinary8(c)
#define scnsLcdColorScreenToRgb565(c)       scnsColorGray8ToRgb565(c)
#define scnsLcdColorScreenToBgr565(c)       scnsColorGray8ToBgr565(c)
#define scnsLcdColorScreenToRgb888(c)       scnsColorGray8ToRgb888(c)
#define scnsLcdColorScreenToBgr888(c)       scnsColorGray8ToBgr888(c)
#define scnsLcdColorScreenToArgb8888(c)     scnsColorGray8ToArgb8888(c)
#define scnsLcdColorScreenToArgb4444(c)     scnsColorGray8ToArgb4444(c)
#define scnsLcdColorScreenToArgb1555(c)     scnsColorGray8ToArgb1555(c)
#define scnsLcdColorScreenToRgb666P1221(c)  scnsColorGray8ToRgb666P1221(c)
#define scnsLcdColorScreenToRgb666P222(c)   scnsColorGray8ToRgb666P222(c)

#elif SCNS_LCD_COLOR_FORMAT==SCNS_COLOR_FORMAT_BINARY8

typedef ScnsColorBinary8 ScnsLcdColor;

#define SCNS_LCD_COLOR_GRAY                 SCNS_COLOR_BINARY8_GRAY
#define SCNS_LCD_COLOR_WHITE                SCNS_COLOR_BINARY8_WHITE
#define SCNS_LCD_COLOR_BLACK                SCNS_COLOR_BINARY8_BLACK
#define SCNS_LCD_COLOR_RED                  SCNS_COLOR_BINARY8_RED
#define SCNS_LCD_COLOR_GREEN                SCNS_COLOR_BINARY8_GREEN
#define SCNS_LCD_COLOR_BLUE                 SCNS_COLOR_BINARY8_BLUE
#define SCNS_LCD_COLOR_YELLOW               SCNS_COLOR_BINARY8_YELLOW
#define SCNS_LCD_COLOR_PURPLE               SCNS_COLOR_BINARY8_PURPLE
#define SCNS_LCD_COLOR_CYAN                 SCNS_COLOR_BINARY8_CYAN
#define SCNS_LCD_COLOR_ORANGE               SCNS_COLOR_BINARY8_ORANGE

#define scnsLcdColorARGBToScreen(a,r,g,b)   scnsColorARGBToBinary8(a,r,g,b)
#define scnsLcdColorScreenToA(c)            scnsColorBinary8ToA(c)
#define scnsLcdColorScreenToR(c)            scnsColorBinary8ToR(c)
#define scnsLcdColorScreenToG(c)            scnsColorBinary8ToG(c)
#define scnsLcdColorScreenToB(c)            scnsColorBinary8ToB(c)
#define scnsLcdColorScreenReplaceA(c,a)     scnsColorBinary8ReplaceA(c,a)
#define scnsLcdColorRandom(i)               scnsColorBinary8Random(i)

#define scnsLcdColorGray8ToScreen(c)        scnsColorGray8ToBinary8(c)
#define scnsLcdColorBinary8ToScreen(c)      scnsColorBinary8ToBinary8(c)
#define scnsLcdColorRgb565ToScreen(c)       scnsColorRgb565ToBinary8(c)
#define scnsLcdColorBgr565ToScreen(c)       scnsColorBgr565ToBinary8(c)
#define scnsLcdColorRgb888ToScreen(c)       scnsColorRgb888ToBinary8(c)
#define scnsLcdColorBgr888ToScreen(c)       scnsColorBgr888ToBinary8(c)
#define scnsLcdColorArgb8888ToScreen(c)     scnsColorArgb8888ToBinary8(c)
#define scnsLcdColorArgb4444ToScreen(c)     scnsColorArgb4444ToBinary8(c)
#define scnsLcdColorArgb1555ToScreen(c)     scnsColorArgb1555ToBinary8(c)
#define scnsLcdColorRgb666P1221ToScreen(c)  scnsColorRgb666P1221ToBinary8(c)
#define scnsLcdColorRgb666P222ToScreen(c)   scnsColorRgb666P222ToBinary8(c)

#define scnsLcdColorScreenToGray8(c)        scnsColorBinary8ToGray8(c)
#define scnsLcdColorScreenToBinary8(c)      scnsColorBinary8ToBinary8(c)
#define scnsLcdColorScreenToRgb565(c)       scnsColorBinary8ToRgb565(c)
#define scnsLcdColorScreenToBgr565(c)       scnsColorBinary8ToBgr565(c)
#define scnsLcdColorScreenToRgb888(c)       scnsColorBinary8ToRgb888(c)
#define scnsLcdColorScreenToBgr888(c)       scnsColorBinary8ToBgr888(c)
#define scnsLcdColorScreenToArgb8888(c)     scnsColorBinary8ToArgb8888(c)
#define scnsLcdColorScreenToArgb4444(c)     scnsColorBinary8ToArgb4444(c)
#define scnsLcdColorScreenToArgb1555(c)     scnsColorBinary8ToArgb1555(c)
#define scnsLcdColorScreenToRgb666P1221(c)  scnsColorBinary8ToRgb666P1221(c)
#define scnsLcdColorScreenToRgb666P222(c)   scnsColorBinary8ToRgb666P222(c)

#elif SCNS_LCD_COLOR_FORMAT==SCNS_COLOR_FORMAT_RGB565

typedef ScnsColorRgb565 ScnsLcdColor;

#define SCNS_LCD_COLOR_GRAY                 SCNS_COLOR_RGB565_GRAY
#define SCNS_LCD_COLOR_WHITE                SCNS_COLOR_RGB565_WHITE
#define SCNS_LCD_COLOR_BLACK                SCNS_COLOR_RGB565_BLACK
#define SCNS_LCD_COLOR_RED                  SCNS_COLOR_RGB565_RED
#define SCNS_LCD_COLOR_GREEN                SCNS_COLOR_RGB565_GREEN
#define SCNS_LCD_COLOR_BLUE                 SCNS_COLOR_RGB565_BLUE
#define SCNS_LCD_COLOR_YELLOW               SCNS_COLOR_RGB565_YELLOW
#define SCNS_LCD_COLOR_PURPLE               SCNS_COLOR_RGB565_PURPLE
#define SCNS_LCD_COLOR_CYAN                 SCNS_COLOR_RGB565_CYAN
#define SCNS_LCD_COLOR_ORANGE               SCNS_COLOR_RGB565_ORANGE

#define scnsLcdColorARGBToScreen(a,r,g,b)   scnsColorARGBToRgb565(a,r,g,b)
#define scnsLcdColorScreenToA(c)            scnsColorRgb565ToA(c)
#define scnsLcdColorScreenToR(c)            scnsColorRgb565ToR(c)
#define scnsLcdColorScreenToG(c)            scnsColorRgb565ToG(c)
#define scnsLcdColorScreenToB(c)            scnsColorRgb565ToB(c)
#define scnsLcdColorScreenReplaceA(c,a)     scnsColorRgb565ReplaceA(c,a)
#define scnsLcdColorRandom(i)               scnsColorRgb565Random(i)

#define scnsLcdColorGray8ToScreen(c)        scnsColorGray8ToRgb565(c)
#define scnsLcdColorBinary8ToScreen(c)      scnsColorBinary8ToRgb565(c)
#define scnsLcdColorRgb565ToScreen(c)       scnsColorRgb565ToRgb565(c)
#define scnsLcdColorBgr565ToScreen(c)       scnsColorBgr565ToRgb565(c)
#define scnsLcdColorRgb888ToScreen(c)       scnsColorRgb888ToRgb565(c)
#define scnsLcdColorBgr888ToScreen(c)       scnsColorBgr888ToRgb565(c)
#define scnsLcdColorArgb8888ToScreen(c)     scnsColorArgb8888ToRgb565(c)
#define scnsLcdColorArgb4444ToScreen(c)     scnsColorArgb4444ToRgb565(c)
#define scnsLcdColorArgb1555ToScreen(c)     scnsColorArgb1555ToRgb565(c)
#define scnsLcdColorRgb666P1221ToScreen(c)  scnsColorRgb666P1221ToRgb565(c)
#define scnsLcdColorRgb666P222ToScreen(c)   scnsColorRgb666P222ToRgb565(c)

#define scnsLcdColorScreenToGray8(c)        scnsColorRgb565ToGray8(c)
#define scnsLcdColorScreenToBinary8(c)      scnsColorRgb565ToBinary8(c)
#define scnsLcdColorScreenToRgb565(c)       scnsColorRgb565ToRgb565(c)
#define scnsLcdColorScreenToBgr565(c)       scnsColorRgb565ToBgr565(c)
#define scnsLcdColorScreenToRgb888(c)       scnsColorRgb565ToRgb888(c)
#define scnsLcdColorScreenToBgr888(c)       scnsColorRgb565ToBgr888(c)
#define scnsLcdColorScreenToArgb8888(c)     scnsColorRgb565ToArgb8888(c)
#define scnsLcdColorScreenToArgb4444(c)     scnsColorRgb565ToArgb4444(c)
#define scnsLcdColorScreenToArgb1555(c)     scnsColorRgb565ToArgb1555(c)
#define scnsLcdColorScreenToRgb666P1221(c)  scnsColorRgb565ToRgb666P1221(c)
#define scnsLcdColorScreenToRgb666P222(c)   scnsColorRgb565ToRgb666P222(c)

#elif SCNS_LCD_COLOR_FORMAT==SCNS_COLOR_FORMAT_BGR565

typedef ScnsColorBgr565 ScnsLcdColor;

#define SCNS_LCD_COLOR_GRAY                 SCNS_COLOR_BGR565_GRAY
#define SCNS_LCD_COLOR_WHITE                SCNS_COLOR_BGR565_WHITE
#define SCNS_LCD_COLOR_BLACK                SCNS_COLOR_BGR565_BLACK
#define SCNS_LCD_COLOR_RED                  SCNS_COLOR_BGR565_RED
#define SCNS_LCD_COLOR_GREEN                SCNS_COLOR_BGR565_GREEN
#define SCNS_LCD_COLOR_BLUE                 SCNS_COLOR_BGR565_BLUE
#define SCNS_LCD_COLOR_YELLOW               SCNS_COLOR_BGR565_YELLOW
#define SCNS_LCD_COLOR_PURPLE               SCNS_COLOR_BGR565_PURPLE
#define SCNS_LCD_COLOR_CYAN                 SCNS_COLOR_BGR565_CYAN
#define SCNS_LCD_COLOR_ORANGE               SCNS_COLOR_BGR565_ORANGE

#define scnsLcdColorARGBToScreen(a,r,g,b)   scnsColorARGBToBgr565(a,r,g,b)
#define scnsLcdColorScreenToA(c)            scnsColorBgr565ToA(c)
#define scnsLcdColorScreenToR(c)            scnsColorBgr565ToR(c)
#define scnsLcdColorScreenToG(c)            scnsColorBgr565ToG(c)
#define scnsLcdColorScreenToB(c)            scnsColorBgr565ToB(c)
#define scnsLcdColorScreenReplaceA(c,a)     scnsColorBgr565ReplaceA(c,a)
#define scnsLcdColorRandom(i)               scnsColorBgr565Random(i)

#define scnsLcdColorGray8ToScreen(c)        scnsColorGray8ToBgr565(c)
#define scnsLcdColorBinary8ToScreen(c)      scnsColorBinary8ToBgr565(c)
#define scnsLcdColorRgb565ToScreen(c)       scnsColorRgb565ToBgr565(c)
#define scnsLcdColorBgr565ToScreen(c)       scnsColorBgr565ToBgr565(c)
#define scnsLcdColorRgb888ToScreen(c)       scnsColorRgb888ToBgr565(c)
#define scnsLcdColorBgr888ToScreen(c)       scnsColorBgr888ToBgr565(c)
#define scnsLcdColorArgb8888ToScreen(c)     scnsColorArgb8888ToBgr565(c)
#define scnsLcdColorArgb4444ToScreen(c)     scnsColorArgb4444ToBgr565(c)
#define scnsLcdColorArgb1555ToScreen(c)     scnsColorArgb1555ToBgr565(c)
#define scnsLcdColorRgb666P1221ToScreen(c)  scnsColorRgb666P1221ToBgr565(c)
#define scnsLcdColorRgb666P222ToScreen(c)   scnsColorRgb666P222ToBgr565(c)

#define scnsLcdColorScreenToGray8(c)        scnsColorBgr565ToGray8(c)
#define scnsLcdColorScreenToBinary8(c)      scnsColorBgr565ToBinary8(c)
#define scnsLcdColorScreenToRgb565(c)       scnsColorBgr565ToRgb565(c)
#define scnsLcdColorScreenToBgr565(c)       scnsColorBgr565ToBgr565(c)
#define scnsLcdColorScreenToRgb888(c)       scnsColorBgr565ToRgb888(c)
#define scnsLcdColorScreenToBgr888(c)       scnsColorBgr565ToBgr888(c)
#define scnsLcdColorScreenToArgb8888(c)     scnsColorBgr565ToArgb8888(c)
#define scnsLcdColorScreenToArgb4444(c)     scnsColorBgr565ToArgb4444(c)
#define scnsLcdColorScreenToArgb1555(c)     scnsColorBgr565ToArgb1555(c)
#define scnsLcdColorScreenToRgb666P1221(c)  scnsColorBgr565ToRgb666P1221(c)
#define scnsLcdColorScreenToRgb666P222(c)   scnsColorBgr565ToRgb666P222(c)

#elif SCNS_LCD_COLOR_FORMAT==SCNS_COLOR_FORMAT_ARGB8888

typedef ScnsColorArgb8888 ScnsLcdColor;

#define SCNS_LCD_COLOR_GRAY                 SCNS_COLOR_ARGB8888_GRAY
#define SCNS_LCD_COLOR_WHITE                SCNS_COLOR_ARGB8888_WHITE
#define SCNS_LCD_COLOR_BLACK                SCNS_COLOR_ARGB8888_BLACK
#define SCNS_LCD_COLOR_RED                  SCNS_COLOR_ARGB8888_RED
#define SCNS_LCD_COLOR_GREEN                SCNS_COLOR_ARGB8888_GREEN
#define SCNS_LCD_COLOR_BLUE                 SCNS_COLOR_ARGB8888_BLUE
#define SCNS_LCD_COLOR_YELLOW               SCNS_COLOR_ARGB8888_YELLOW
#define SCNS_LCD_COLOR_PURPLE               SCNS_COLOR_ARGB8888_PURPLE
#define SCNS_LCD_COLOR_CYAN                 SCNS_COLOR_ARGB8888_CYAN
#define SCNS_LCD_COLOR_ORANGE               SCNS_COLOR_ARGB8888_ORANGE

#define scnsLcdColorARGBToScreen(a,r,g,b)   scnsColorARGBToArgb8888(a,r,g,b)
#define scnsLcdColorScreenToA(c)            scnsColorArgb8888ToA(c)
#define scnsLcdColorScreenToR(c)            scnsColorArgb8888ToR(c)
#define scnsLcdColorScreenToG(c)            scnsColorArgb8888ToG(c)
#define scnsLcdColorScreenToB(c)            scnsColorArgb8888ToB(c)
#define scnsLcdColorScreenReplaceA(c,a)     scnsColorArgb8888ReplaceA(c,a)
#define scnsLcdColorRandom(i)               scnsColorArgb8888Random(i)

#define scnsLcdColorGray8ToScreen(c)        scnsColorGray8ToArgb8888(c)
#define scnsLcdColorBinary8ToScreen(c)      scnsColorBinary8ToArgb8888(c)
#define scnsLcdColorRgb565ToScreen(c)       scnsColorRgb565ToArgb8888(c)
#define scnsLcdColorBgr565ToScreen(c)       scnsColorBgr565ToArgb8888(c)
#define scnsLcdColorRgb888ToScreen(c)       scnsColorRgb888ToArgb8888(c)
#define scnsLcdColorBgr888ToScreen(c)       scnsColorBgr888ToArgb8888(c)
#define scnsLcdColorArgb8888ToScreen(c)     scnsColorArgb8888ToArgb8888(c)
#define scnsLcdColorArgb4444ToScreen(c)     scnsColorArgb4444ToArgb8888(c)
#define scnsLcdColorArgb1555ToScreen(c)     scnsColorArgb1555ToArgb8888(c)
#define scnsLcdColorRgb666P1221ToScreen(c)  scnsColorRgb666P1221ToArgb8888(c)
#define scnsLcdColorRgb666P222ToScreen(c)   scnsColorRgb666P222ToArgb8888(c)

#define scnsLcdColorScreenToGray8(c)        scnsColorArgb8888ToGray8(c)
#define scnsLcdColorScreenToBinary8(c)      scnsColorArgb8888ToBinary8(c)
#define scnsLcdColorScreenToRgb565(c)       scnsColorArgb8888ToRgb565(c)
#define scnsLcdColorScreenToBgr565(c)       scnsColorArgb8888ToBgr565(c)
#define scnsLcdColorScreenToRgb888(c)       scnsColorArgb8888ToRgb888(c)
#define scnsLcdColorScreenToBgr888(c)       scnsColorArgb8888ToBgr888(c)
#define scnsLcdColorScreenToArgb8888(c)     scnsColorArgb8888ToArgb8888(c)
#define scnsLcdColorScreenToArgb4444(c)     scnsColorArgb8888ToArgb4444(c)
#define scnsLcdColorScreenToArgb1555(c)     scnsColorArgb8888ToArgb1555(c)
#define scnsLcdColorScreenToRgb666P1221(c)  scnsColorArgb8888ToRgb666P1221(c)
#define scnsLcdColorScreenToRgb666P222(c)   scnsColorArgb8888ToRgb666P222(c)

#elif SCNS_LCD_COLOR_FORMAT==SCNS_COLOR_FORMAT_ARGB4444

typedef ScnsColorArgb4444 ScnsLcdColor;

#define SCNS_LCD_COLOR_GRAY                 SCNS_COLOR_ARGB4444_GRAY
#define SCNS_LCD_COLOR_WHITE                SCNS_COLOR_ARGB4444_WHITE
#define SCNS_LCD_COLOR_BLACK                SCNS_COLOR_ARGB4444_BLACK
#define SCNS_LCD_COLOR_RED                  SCNS_COLOR_ARGB4444_RED
#define SCNS_LCD_COLOR_GREEN                SCNS_COLOR_ARGB4444_GREEN
#define SCNS_LCD_COLOR_BLUE                 SCNS_COLOR_ARGB4444_BLUE
#define SCNS_LCD_COLOR_YELLOW               SCNS_COLOR_ARGB4444_YELLOW
#define SCNS_LCD_COLOR_PURPLE               SCNS_COLOR_ARGB4444_PURPLE
#define SCNS_LCD_COLOR_CYAN                 SCNS_COLOR_ARGB4444_CYAN
#define SCNS_LCD_COLOR_ORANGE               SCNS_COLOR_ARGB4444_ORANGE

#define scnsLcdColorARGBToScreen(a,r,g,b)   scnsColorARGBToArgb4444(a,r,g,b)
#define scnsLcdColorScreenToA(c)            scnsColorArgb4444ToA(c)
#define scnsLcdColorScreenToR(c)            scnsColorArgb4444ToR(c)
#define scnsLcdColorScreenToG(c)            scnsColorArgb4444ToG(c)
#define scnsLcdColorScreenToB(c)            scnsColorArgb4444ToB(c)
#define scnsLcdColorScreenReplaceA(c,a)     scnsColorArgb4444ReplaceA(c,a)
#define scnsLcdColorRandom(i)               scnsColorArgb4444Random(i)

#define scnsLcdColorGray8ToScreen(c)        scnsColorGray8ToArgb4444(c)
#define scnsLcdColorBinary8ToScreen(c)      scnsColorBinary8ToArgb4444(c)
#define scnsLcdColorRgb565ToScreen(c)       scnsColorRgb565ToArgb4444(c)
#define scnsLcdColorBgr565ToScreen(c)       scnsColorBgr565ToArgb4444(c)
#define scnsLcdColorRgb888ToScreen(c)       scnsColorRgb888ToArgb4444(c)
#define scnsLcdColorBgr888ToScreen(c)       scnsColorBgr888ToArgb4444(c)
#define scnsLcdColorArgb8888ToScreen(c)     scnsColorArgb8888ToArgb4444(c)
#define scnsLcdColorArgb4444ToScreen(c)     scnsColorArgb4444ToArgb4444(c)
#define scnsLcdColorArgb1555ToScreen(c)     scnsColorArgb1555ToArgb4444(c)
#define scnsLcdColorRgb666P1221ToScreen(c)  scnsColorRgb666P1221ToArgb4444(c)
#define scnsLcdColorRgb666P222ToScreen(c)   scnsColorRgb666P222ToArgb4444(c)

#define scnsLcdColorScreenToGray8(c)        scnsColorArgb4444ToGray8(c)
#define scnsLcdColorScreenToBinary8(c)      scnsColorArgb4444ToBinary8(c)
#define scnsLcdColorScreenToRgb565(c)       scnsColorArgb4444ToRgb565(c)
#define scnsLcdColorScreenToBgr565(c)       scnsColorArgb4444ToBgr565(c)
#define scnsLcdColorScreenToRgb888(c)       scnsColorArgb4444ToRgb888(c)
#define scnsLcdColorScreenToBgr888(c)       scnsColorArgb4444ToBgr888(c)
#define scnsLcdColorScreenToArgb8888(c)     scnsColorArgb4444ToArgb8888(c)
#define scnsLcdColorScreenToArgb4444(c)     scnsColorArgb4444ToArgb4444(c)
#define scnsLcdColorScreenToArgb1555(c)     scnsColorArgb4444ToArgb1555(c)
#define scnsLcdColorScreenToRgb666P1221(c)  scnsColorArgb4444ToRgb666P1221(c)
#define scnsLcdColorScreenToRgb666P222(c)   scnsColorArgb4444ToRgb666P222(c)

#elif SCNS_LCD_COLOR_FORMAT==SCNS_COLOR_FORMAT_ARGB1555

typedef ScnsColorArgb1555 ScnsLcdColor;

#define SCNS_LCD_COLOR_GRAY                 SCNS_COLOR_ARGB1555_GRAY
#define SCNS_LCD_COLOR_WHITE                SCNS_COLOR_ARGB1555_WHITE
#define SCNS_LCD_COLOR_BLACK                SCNS_COLOR_ARGB1555_BLACK
#define SCNS_LCD_COLOR_RED                  SCNS_COLOR_ARGB1555_RED
#define SCNS_LCD_COLOR_GREEN                SCNS_COLOR_ARGB1555_GREEN
#define SCNS_LCD_COLOR_BLUE                 SCNS_COLOR_ARGB1555_BLUE
#define SCNS_LCD_COLOR_YELLOW               SCNS_COLOR_ARGB1555_YELLOW
#define SCNS_LCD_COLOR_PURPLE               SCNS_COLOR_ARGB1555_PURPLE
#define SCNS_LCD_COLOR_CYAN                 SCNS_COLOR_ARGB1555_CYAN
#define SCNS_LCD_COLOR_ORANGE               SCNS_COLOR_ARGB1555_ORANGE

#define scnsLcdColorARGBToScreen(a,r,g,b)   scnsColorARGBToArgb1555(a,r,g,b)
#define scnsLcdColorScreenToA(c)            scnsColorArgb1555ToA(c)
#define scnsLcdColorScreenToR(c)            scnsColorArgb1555ToR(c)
#define scnsLcdColorScreenToG(c)            scnsColorArgb1555ToG(c)
#define scnsLcdColorScreenToB(c)            scnsColorArgb1555ToB(c)
#define scnsLcdColorScreenReplaceA(c,a)     scnsColorArgb1555ReplaceA(c,a)
#define scnsLcdColorRandom(i)               scnsColorArgb1555Random(i)

#define scnsLcdColorGray8ToScreen(c)        scnsColorGray8ToArgb1555(c)
#define scnsLcdColorBinary8ToScreen(c)      scnsColorBinary8ToArgb1555(c)
#define scnsLcdColorRgb565ToScreen(c)       scnsColorRgb565ToArgb1555(c)
#define scnsLcdColorBgr565ToScreen(c)       scnsColorBgr565ToArgb1555(c)
#define scnsLcdColorRgb888ToScreen(c)       scnsColorRgb888ToArgb1555(c)
#define scnsLcdColorBgr888ToScreen(c)       scnsColorBgr888ToArgb1555(c)
#define scnsLcdColorArgb8888ToScreen(c)     scnsColorArgb8888ToArgb1555(c)
#define scnsLcdColorArgb4444ToScreen(c)     scnsColorArgb4444ToArgb1555(c)
#define scnsLcdColorArgb1555ToScreen(c)     scnsColorArgb1555ToArgb1555(c)
#define scnsLcdColorRgb666P1221ToScreen(c)  scnsColorRgb666P1221ToArgb1555(c)
#define scnsLcdColorRgb666P222ToScreen(c)   scnsColorRgb666P222ToArgb1555(c)

#define scnsLcdColorScreenToGray8(c)        scnsColorArgb1555ToGray8(c)
#define scnsLcdColorScreenToBinary8(c)      scnsColorArgb1555ToBinary8(c)
#define scnsLcdColorScreenToRgb565(c)       scnsColorArgb1555ToRgb565(c)
#define scnsLcdColorScreenToBgr565(c)       scnsColorArgb1555ToBgr565(c)
#define scnsLcdColorScreenToRgb888(c)       scnsColorArgb1555ToRgb888(c)
#define scnsLcdColorScreenToBgr888(c)       scnsColorArgb1555ToBgr888(c)
#define scnsLcdColorScreenToArgb8888(c)     scnsColorArgb1555ToArgb8888(c)
#define scnsLcdColorScreenToArgb4444(c)     scnsColorArgb1555ToArgb4444(c)
#define scnsLcdColorScreenToArgb1555(c)     scnsColorArgb1555ToArgb1555(c)
#define scnsLcdColorScreenToRgb666P1221(c)  scnsColorArgb1555ToRgb666P1221(c)
#define scnsLcdColorScreenToRgb666P222(c)   scnsColorArgb1555ToRgb666P222(c)

#else
#error undefined or unsupport SCNS_LCD_COLOR_FORMAT
#endif
#define SCNS_LCD_COLOR_BACKGROUND   scnsLcdColorArgb8888ToScreen(SCNS_LCD_COLOR_BACKGROUND_ARGB8888)
#endif
#endif